﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using i4pro_gruppe_d.Types;

namespace i4pro_gruppe_d.ControllerCommunication
{
	public interface IControllerCommunication
    {
        /// <summary>
        /// Initialization methods 
        /// </summary>
        bool init(ushort mode);
        bool home(char axis);
        bool control(char axis, bool status);

	    /// <summary>
	    /// Vector Methods
	    /// </summary>
	    bool defineVector(char group, string vectorName, short size);
	    bool teach(string vectorName, Vector vector);
        bool getCurrentPos(ref Vector vector);

        /// <summary>
        /// Robotarm methods
        /// </summary>
        bool moveTo(string vectorName1, short pointNumber1, string vectorname2, short pointNumber2);
	    void WatchMotions(bool endMotions, bool startMotions);
	    bool GetMotionStatus();

        /// <summary>
        /// Gripper methods
        /// </summary>
        bool openGripper(); 
        bool closeGripper();
        bool getGripperWidth(ref short width);

	    /// <summary>
	    /// Lightsensor methods
	    /// </summary>        
	    bool activateLightsensor();
	    bool deactivateLightsensor();

        /// <summary>
        /// Weight methods
        /// </summary>
        double measureWeight();

        /// <summary>
        /// Conveyer methods.
        /// </summary>
        bool startConveyer(int speed);
        bool stopConveyer();
	    bool enterManualMode(short moveType);
	    bool closeManualMode();

        /// <summary>
        /// Utility methods
        /// </summary>
        bool stopRobot(char axis);
        bool isEmergency();
        bool isRobotOnline();
        void closeConnection();
    }
}
